/**
 * @file PtogzOutputWriter.cpp
 *
 * Zapis obserwacji w formacie PTOGZ/SSW - implementacja.
 *
 * @author Zbigniew Siciarz
 * @date 2009
 * @version 2.0.0
 * @since 2.0.0
 */

#include "PtogzOutputWriter.h"

#include "VisualObservation.h"
#include <QRegExp>
#include <QSettings>

namespace Dogz
{
    /**
     * Zwraca listę obserwacji zapisaną w formacie PTOGZ/SSW.
     *
     * @return tekstowa reprezentacja listy
     */
    QString PtogzOutputWriter::getOutput() const
    {
        QString output("");

        static QRegExp notAGreekLetter("^(([a-zA-Z]{1,2}|V\\d+)\\s+([a-zA-Z]{3}))|(NSV\\s+\\d+)");
        notAGreekLetter.setCaseSensitivity(Qt::CaseInsensitive);

        QSettings settings;
        bool fixGreek = settings.value("output/fixGreek", false).toBool();

        foreach (const VisualObservation& obs, m_observations)
        {
            QString mag = QString::number(obs.getMagnitude());
            if (1 == mag.size())
                mag += ".0";

            QString starName = obs.getStarName();
            if (fixGreek && !notAGreekLetter.exactMatch(starName))
                starName = Star::fixGreekLetter(starName);

            output += QString("%1 %2 %3\n").
                arg(starName).arg(obs.getJd(), 0, 'f', 4).arg(mag);
        }

        return output;
    }
}
